perm filename DRAFT.1[AP,DBL]1 blob
sn#115213 filedate 1974-08-09 generic text, type T, neo UTF8
00100 PUP5 Paper First Draft
00200
00300 1. OUTLINE
00400 Outline
00500 Abstract
00600 Ideas
00700 Implementation
00800 Targets
00900 Performance
01000 Conclusions
01100
01200 2. ABSTRACT
01300 A system has been implemented which can synthesize large inductive inference
01400 programs. The ideas upon which it is based are perhaps more significant,
01500 and they are discussed first. The central idea is that all knowledge and
01600 all control resides in highly structured pieces of code called BEINGS. Each
01700 being has a similar structure, and may therefore be viewed as an extension
01800 of the concept of ACTORS [Hewitt, 1973]. A general description of the
01900 system which realized these ideas is provided, and its target domain is
02000 discussed. Some unexpected problems, and some unexpected rewards, were
02100 encountered. Various measures of performance of Automatic Programming
02200 Systems are proposed, and we compare the current system to previous ones.
02300 We conclude by pooling our ideas into a "view" of Automatic Programming,
02400 and mention future plans.
02500
02600 3. IDEAS
02700
02800 There are, of course, countless ideas embodied in any concrete
02900 project. Sweeping philosophical assumptions are made simply in trying to
03000 do Automatic Programming [McCarthy, ]. The Program Understanding
03100 Program (PUP5) should include the best parts of all the best old ideas.
03200 We rely on concepts gleaned from Actors [Hewitt, l973], Demons [Charniak,
03300 1973], heterarchy [Reddy, l973], structured programming [Dijkstra, l973],
03400 assertional data bases and flexible data types [Sacerdoti, l973], pattern-
03500 directed invocation of procedural knowledge [Winograd, l972], the paradigm
03600 of dialogue [Floyd, 1972], and studies on program specification techniques
03700 [Green, l974]. Of course this list is incomplete; sophistocated ideas are
03800 captured in the languages themselves: QLISP [Sacerdoti], INTERLISP
03900 [Teitelmann], LISP [McCarthy], English [Anonymous]. To this impressive
04000 store, we add a few new concepts.
04100 First, we resolve the uniformity vs. structure controversy. The
04200 benefits of the former include easy addition of knowledge [Newell, l973]
04300 and simple methods for combining information [McCarthy, ]. Structure,
04400 however, is necessary for efficient handling of large amounts of data. In
04500 PUP5, we integrate these two ideas into the concept of Beings. A being is
04600 a collection of about thirty little bits of LISP code, the answers to thirty
04700 questions about the being. That is, we view a bit of program as equivalent
04800 to its answers to these questions. Every scrap of knowledge, every bit of
04900 control structure should be encoded into beings. There is nothing else in
05000 the system but this interacting community. Notice that while each being is
05100 highly structured, this structure is uniform over the entire community. Each
05200 being part is itself a little being, etc., and we stop this infinite regress
05300 when the contents of the being part becomes meaninglessly primitive. Each
05400 being is cognizant of the set of thirty questions, and in answering one of
05500 them it may freely ask quesions of other beings (often through nondetermi-
05600 nistic goal statements.) The reader may glance below at the particular set
05700 of questions used, but we shall discuss our other ideas next.
05800 Since only beings exist, all our code must be written as beings, and
05900 must be written by beings. A crucial consequence is that some beings must
06000 write code. Our new idea is that the being who knows about X takes charge of
06100 generating code relating to X. The SORT being can do sorting, and he can
06200 also write specializaed sort routines, and he can answer questions about
06300 sorting.
06400 In a similar vein, some being(s) must do the translation of the
06500 users' quasi-English inputs into being-usable form. We choose to have each
06600 being X recognize English related to X. Thus translation consists of
06700 saying "who can recognize ..." and waiting for a response.
06800 Two more ideas are present, which reflect philosophical constraints.
06900 As in all programming, decisions continually crop up which the system is
07000 not able to resolve at the time. We have the system spend a significant
07100 effort trying to defer the decision as long as possible, until no progress
07200 can be made without its resolution. At that time, if the system is still
07300 unsure, either the user settles the question of else a backtrack point is
07400 reluctantly set up. The second bit of philosophy is that most of the
07500 carelessness bugs can be eliminated through this deferral and through
07600 very precise record-keeping. Humans substitute adaptability for their
07700 faulty brain hardware [Newell, l973], but there is no need for an AP system
07800 to do so.